package com.micangcaihang.micang.mvp.task.presenter;

import com.micangcaihang.common.http.ApiResult;
import com.micangcaihang.common.http.exception.ApiException;
import com.micangcaihang.micang.entity.TaskListEntity;
import com.micangcaihang.micang.http.MiSubScriber;
import com.micangcaihang.micang.mvp.task.contract.FTabToBeTreatedContract;
import com.micangcaihang.micang.mvp.task.model.FTabToBeTreatedModel;

import java.util.List;

import io.reactivex.Observable;

/**
 * <pre>
 *     author : Fandy
 *     e-mail : fandayongfly@gmail.com
 *     time   : 2017/07/17
 *     desc   : 风控待处理任务P
 *     version: 1.0
 * </pre>
 */

public class FTabToBeTreatedPresenter extends FTabToBeTreatedContract.Presenter {
    private int page;
    private int pageSize;
    private FTabToBeTreatedModel mModel;

    @Override
    public void setV(FTabToBeTreatedContract.View v) {
        super.setV(v);
        mModel = new FTabToBeTreatedModel();
    }

    /**
     * 每次进入界面获取网络数据，更新界面
     *
     * @param isRefresh 新增参数，用来判断是否为下拉刷新调用，下拉刷新的时候不应该再显示加载界面和异常界面
     */
    @Override
    public void loadFirstData(boolean isRefresh) {
        loadTaskList(isRefresh);
    }

    /**
     * 加载更多数据
     */
    @Override
    public void loadMoreData() {

    }

    /**
     * 加载待处理任务列表
     */
    @Override
    public void loadTaskList(boolean isRefresh) {
        Observable<ApiResult<List<TaskListEntity>>> taskList = mModel.getTaskList(page, pageSize);
        mRxManage.add(taskList.subscribeWith(new MiSubScriber<ApiResult<List<TaskListEntity>>>() {
            @Override
            protected void doOnStart() {
                if (isRefresh) {
                    mView.showRefreshLoading();
                } else {
                    mView.showLoading();
                }
            }

            @Override
            protected void doOnNext(ApiResult<List<TaskListEntity>> taskListApiResult) {
                if (taskListApiResult.data == null || taskListApiResult.data.isEmpty()) {
                    mView.showEmptyLayout();
                } else {
                    mView.returnTaskList(taskListApiResult.data);
                }
            }

            @Override
            protected void doOnError(ApiException e) {
                mView.finishRefresh();
                mView.showNetError(e);
            }

            @Override
            protected void doOnComplete() {
                mView.finishRefresh();
            }
        }));
    }
}
